#ifndef VIDEO_H
#define VIDEO_H
/*!
 * \file video.h
 * \brief Diffusion des images a l'ecran
 * \version 1.0
 */
#include <QObject>
#include <QDebug>
#include <QTimer>
#include <QTime>
#include <QLabel>
#include <imageconsumer.h>
/**
 * \brief Diffusion des images a l'ecran
 * \version 1.0
 * Classe d'affichage d'une fenetre diffusant a l'ecran les images captees
 */
class Video : public QLabel , public ImageConsumer
{
    Q_OBJECT
private:
    int idTimer;
    char* window_title;
    IplImage *cvimage;

    QTimer *timer;
    QLabel *videoDisplay;

    bool inRefresh;

    QSize imageSize;
    QSize windowsSize;

    QImage image;

public:
    /**
      * \fn Video(QSize size)
      * \brief Constructeur
      * Constructeur de la classe Video
      * \param size : resolution de la video a diffuser
      */
    Video(QSize const size);
    /**
      * \fn ~Video()
      * \brief Destructeur
      * Destructeur de la classe Video
      */
    ~Video();
    /**
      * \fn void run()
      * \brief Lancement de la boucle
      * Lance le timer pour executer refresh() en continu
      */
    void run();

public slots:
    /**
      * \fn void terminate()
      * \brief Arret du timer
      * Permet l'arret de l'execution continu de refresh() pour stopper l'affichage video
      */
    void terminate();

protected:
    /**
      * \fn void closeEvent(QCloseEvent *event)
      * \brief Event de fermeture
      * Fonction executer lorsque la fenetre se ferme, envoie le signal closed()
      */
    void closeEvent(QCloseEvent *event);

signals:
    void closed();

private slots:
    void refresh();
};

#endif // VIDEO_H
